package com.amumu.drama.common.modules.aliyunoss.constant;

import com.google.common.collect.Maps;

import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Map;

/**
 * @author sunzhuang
 * @date 2024/6/17 14:36
 * @slogan 天下风云出我辈, 一入代码岁月催
 * @desc todo
 */

public enum OssBucket {
    PORTAL("weiwanjia", "");

    private static final Map<String, OssBucket> LOOKUP = Maps.uniqueIndex(
            Arrays.asList(OssBucket.values()),
            OssBucket::getBucketName
    );

    private final String bucketName;

    private final String url;

    OssBucket(String bucketName, String url) {
        this.bucketName = bucketName;
        this.url = url;
    }

    /**
     * 根据bucketName转换枚举
     */
    @Nullable
    public static OssBucket parse(String bucketName) {
        if (bucketName == null || bucketName.trim().length() == 0) {
            return null;
        }
        return LOOKUP.get(bucketName);
    }

    /**
     * 根据bucketName转换公网访问地址
     */
    @Nullable
    public static String tryGetUrl(String bucketName) {
        OssBucket type = parse(bucketName);
        return type == null ? null : type.getUrl();
    }

    /**
     * 为了支持多环境公用同一个bucket枚举常量。
     *
     * @return 若不在环境隔离的bucket名单里或生产环境，则返回配置枚举时的bucketName；否则返回带环境标识的bucketName。
     */
    public String getBucketName() {
        return this.bucketName;
//        AliyunOssConfig ossConfig = SpringUtil.getBean(AliyunOssConfig.class);
//        // 经老板确认，所有的bucket的名称均以"-weiwanjia"结尾，往结尾拼上环境标识。
//        // 如：saas-weiwanjia->saas-dev-weiwanjia
//        String weiwanjiaOssBucketNameSuffix = "-weiwanjia";
//        return this.bucketName.replace(weiwanjiaOssBucketNameSuffix, "-" + EnvironmentUtils.getEnv().toString().toLowerCase() + weiwanjiaOssBucketNameSuffix);
    }

    public String getUrl() {
        return url;
    }

    @Override
    public String toString() {
        return getBucketName();
    }

}
